Ты здесь Только не уходи Всё у нас впереди Ты здесь ...... Диана Гурская
После того, как клиент соединился с сервером ему надо достойно ответить. Мол так и так всё в порядке. Синтаксис ответа должен быть такой:
"HTTP/1.0" < код возврата > [ < сообщение > ] < crlf >
{< Поле заголовка >: < Значение > < crlf >}*
< crlf >
< HTML документ >
Я перестроил функцию SendFile для того, чтобы заголовок постоянно отправлялся перед отправкой файла. Стабильность работы возрасла на порядок.
BOOL CSeverWinSock::SendFile(CString FileName)
{
CFile cf(FileName,CFile::modeRead);
int fileLeght=cf.GetLength();
CString SendOk="HTTP/1.0 200 OK\015\012Server: FirsStepServer/0.1\015\012\015\012";
CString SendFile;
cf.Read(SendFile.GetBufferSetLength(fileLeght) ,fileLeght);
SendOk=SendOk+SendFile;
SendData(SendOk.GetBufferSetLength(SendOk.GetLength()) ,SendOk.GetLength());
return TRUE;
}
Обратите вимание на конец строки. Перед тем как отправлять файл необходимо два раза указать CRLF. Один раз по окончании строки заголовка, второй раз о том, что все и строка статуса и заголовок посланы. Это важно. Оставьте один раз и посмотрите файл не выведется.
Вы можете поэкспериментировать с кодами возврата. Вот так. Например на авторизацию доступа.
CString SendOk="HTTP/1.0 401 OK\015\012\015\012";
Вот чего мне показал в ответ Microsoft Exploler.
